import axios from "axios";
import toolElement from "../element/tool";

// 创建axios实例.
let service = axios.create({
  // baseURL: "61.52.247.249:20114",
  baseURL: "https://lj.zzfmhb.com:18081/api",
  timeout: 10000,
  headers: { "Content-Type": "application/json" },
});

// 添加请求拦截器
service.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
service.interceptors.response.use(
  function ({ data }) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    if (data.code != 200 && data.code != 0 && data.code != 1) {
      console.error("请求异常 ----- ", data);
      toolElement.msg(data.msg || "网络请求异常,请联系管理员...", "error");
      throw new Error("请求异常 ----- ");
    }
    data = data.data || data;
    return data.data || data.list || data;
  },
  function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);

function get(url, params) {
  return service({ url, method: "get", params });
}

function post(url, data) {
  return service({
    url,
    method: "post",
    data: JSON.stringify(data),
  });
}

function postFrom(url, formData) {
  return service({
    url,
    method: "post",
    data: formData,
    processData: false, // 告诉axios不要去处理发送的数据(重要参数)
    contentType: false, // 告诉axios不要去设置Content-Type请求头
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
    },
  });
}

function put(url, data) {
  return service({
    url,
    method: "put",
    data,
  });
}

function remove(url, data) {
  return service({
    url,
    method: "delete",
    data,
  });
}

function sendUrl(url) {
  return service({
    url: "/http-send?url=" + url,
    method: "get",
  });
}

const toolAxios = {
  get,
  put,
  post,
  postFrom,
  remove,
  sendUrl,
};

export default toolAxios;
